/*
 * Η κλάση έναρξης λειτουργίας του συστήματος
 */
package tilefoneia;
import java.util.Random;
import java.io.*;

public class ΜΑΙΝ {

    private static String hmerominia;
    private static int ora = 0;
    private static int lepta = 3;
    private static String ora_lepta;
    private static int diarkeiaKlisis = 0;
    private static int hmera = 0;
    private static int minas = 12;
    private static int etos = 2011;
    private static int hmeraEos = 0;  
    private static Syndromitis [] syndromites = new Syndromitis[10];
    private static  FileWriter fw;
    private static  PrintWriter pw;
    
    public static void main(String[] args) {
        
        // Ανοιγμα αρχείου κινήσεων κλήσεων
        anoigmaArxeiouKinisewnKlisewn();
                
        // Ερώτημα Β – Δημιουργία Συνδρομητών και Κλήσεων
        dimiourgiaSyndromitwn();
        
        // Δημιουργία με στατικό τρόπο 5 κινήσεις κλήσεων, στο διάστημα ενός μήνα (π.χ. Δεκεμβρίου)
        dimiourgiaKinisewnKlisewn(5);
                
        //  Ερώτημα Γ – Μέθοδοι Ταξινόμησης, Αποθήκευσης και Εκτύπωσης
        syndromites[0].sortKinOmilias(pw);
        // Κλείσιμο αρχείου κινήσεων κλήσεων
        pw.flush();
        pw.close();
        
    }
    
    // Ανοιγμα αρχείου κινήσεων κλήσεων
    public static void  anoigmaArxeiouKinisewnKlisewn()  {
        try {
            fw = new FileWriter("ArxeioKinisewnKlisewn.txt", true);
            pw = new PrintWriter(fw, true);
        }
        catch (IOException e){
            e.printStackTrace();  
        }
    }
        
    // Δημιουργία Συνδρομητών και συνδέσεων
    public static void dimiourgiaSyndromitwn()  {
         // 1ος συνδρομητής, άτομο, με 2 συνδέσεις
        syndromites[0] = new Atomo("Eyanthia", "517", "025876150");
        // η πρώτη σύνδεση της Ευανθίας έχει αριθμό τηλεφώνου "2310991166" και πρόγραμμα ομιλίας 200'
        Syndesi syndesi = new Syndesi(syndromites[0], "2311991166", new Omilias("01/10/2011", 200), new Internet("01/10/2011", 4), "01/06/2010");
        syndromites[0].neaSyndesi(syndesi); 
        // η δεύτερη σύνδεση της Ευανθίας έχει αριθμό τηλεφώνου και πρόγραμμα απεριόριστης ομiλίας'
        syndromites[0].neaSyndesi(new Syndesi(syndromites[0], "2311891660", new Omilias("01/10/2011", Integer.MAX_VALUE), new Internet("01/10/2011", 24), "20/02/2011"));  
  
        // 2ος συνδρομητής, εταιρία 'ΗΛΙΟΣ', με μία συνδυασμένη 
        syndromites[1] = new Etaireia("ΗΛΙΟΣ", "7630", "098755186");
        Syndyasmeno syntheto = new Syndyasmeno("23/12/2011", new Omilias("23/12/2011", Integer.MAX_VALUE), new Internet("23/12/2011", 24));
        Syndesi syndesi1 = new Syndesi(syndromites[1], "2311453001", syntheto, "23/12/2011");
        syndromites[1].neaSyndesi(syndesi1); 
    }
    
    // Δημιουργία κινήσεων κλήσεων  με τυχαιοποίηση ως προς την ημέρα, ώρα και λεπτά
    public static void dimiourgiaKinisewnKlisewn(int kiniseis) {
        Random r = new Random();
        hmeraEos = 1;
        int kinisiMetritis = 0;
        do {
            hmera = r.nextInt(31/5) + hmeraEos;
            hmeraEos = hmeraEos + 6;
            hmerominia = (hmera + "/" + minas + "/" + etos);        
            
            ora = r.nextInt(24);
            lepta = r.nextInt(60);
            ora_lepta = (ora + ":" + lepta);
            
            diarkeiaKlisis = r.nextInt(150)+3;  // λεπτά
            
            syndromites[0].addKlisi("2311991166", hmerominia, ora_lepta, diarkeiaKlisis);
            kinisiMetritis++;
        }
        while (kinisiMetritis < kiniseis);
    }
}
